﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Farmacia.Entities;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.Unity;
using System.Data;
using System.Data.Common;

namespace Farmacia.DataAccess
{
    public class DetallePedidoDAO:MasterDAEL, iDetallePedidoDAO 
    {
        [Dependency]
        public iProductoDAO ProductoDAO{ get; set; }

        public List<DetallePedido> GetFromDetallePedidobyPedidoId(int IdPedido)
        {
            var rowMapper = MapBuilder<DetallePedido>
                 .MapAllProperties()
                //.DoNotMap(p => p.CodigoLabel)
                //.Map(p => p.Producto)
                //.WithFunc(p => ProductoDAO.GetFromProductobyId(p.GetInt32(p.GetOrdinal("IdProducto")))
                .Build();   

            var query = DataBase.ExecuteSprocAccessor<DetallePedido>("GetFromDetallePedidobyPedidoId", rowMapper, IdPedido);
            return query.ToList();
        }

        public void RegistrarDetalle(int IdPedido)
        {
            throw new NotImplementedException();
        }

        public void RegistrarDetalle(DetallePedido detalle)
        {
            /* @item int out,
    @pedidoId int,
    @productoId int,
    @descripcion varchar (200),
    @cantidad decimal(9,2),
    @precio decimal(9,2),
    @und varchar(5)  */

             DbCommand command = DataBase.GetStoredProcCommand("RegistrarDetallePedido");

                DataBase.AddInParameter(command, "item", DbType.Int32, detalle.IdDetallePedido);
                DataBase.AddInParameter(command, "pedidoId", DbType.Int32, detalle.Pedido.IdPedido);
                DataBase.AddInParameter(command, "descripcion", DbType.Int32, detalle.Descripcion);
                DataBase.AddInParameter(command, "productoId", DbType.Int32, detalle.IdProducto);
                DataBase.AddInParameter(command, "cantidad", DbType.Int32, detalle.Cantidad);
                DataBase.AddInParameter(command, "precio", DbType.Int32, detalle.Precio);
                DataBase.AddInParameter(command, "und", DbType.Int32, detalle.Unidad);
            }

        public void EliminarDetalle(int item)
        {
            throw new NotImplementedException();
        }
    }
}
